查看原文
其他

事件推送网关: “让基础设施建设动起来”

木讷大叔爱运维 木讷大叔爱运维 2022-07-13




读完需 6 分钟

速读需 3 分钟 




事件推送网关:让cmdb告别“花瓶”》自发起至今已两月有余,在此期间我们从无到有对cmdb的事件推送进行了充分的摸索,不断的踩坑填坑,现已基本实现了以下功能:

  • cmdb和zabbix同步,以“业务_集群_模块”的分组规则进行创建、更新、删除同步;主机创建、模板绑定、删除,代替zabbix的被动的自动发现或自动注册,握一定的主动性

  • cmdb和jumpserver同步,按“/业务/集群/模块”的节点规则适配jumpserver的树形结构,对节点进行创建、更新、删除同步;资产的分组更新、删除;


基于cmdb,我们对基础设施的管理有了依据,事件推送网关保证了基础设置的有序流动,我们可以抽出更多的时间专注于上层的需求建设。


需求

  1. cmdb和zabbix、jumpserver等系统隔离,资产分组无法保持一致,需要花费大量的精力去维护;

  2. zabbix告警无法关联业务,通过cmdb的业务拓扑为zabbix提供分组依据的同时,告警信息关联业务拓扑来展示,帮助运维快速定位系统;

  3. jumpserver资产分配无法关联业务,通过cmdb的业务拓扑为zabbix提供分组依据,jumpserer  web端只负责权限分配;


系统隔离是一直是运维管理的一大难题,统一的esb总线来适配所有系统是不现实的,因此我们希望通过事件推送网关来间接打通。


解决方案

1.cmdb事件推送

  蓝鲸cmdb原生支持主机业务(资源池、主机)、业务拓扑(集群、拓扑)、组织架构(业务)等内容的新增、编辑、删除动作,触发回调自行开发的事件推送网关(gateway);


2.事件推送网关(gateway)

   gateway接收蓝鲸cmdb事件推送的POST请求,合并请求后调用zabbix、jumpserver等系统的API,实现资产分组、创建,主机转移等操作;


3.cmdb触发规则

cmdb的触发规则主要分为以下几类:

  • 业务的创建、更新、删除

# 业务触发规则下的参数{'action': 'create', 'obj_type': 'biz'}{'action': 'update', 'obj_type': 'biz'}{'action': 'delete', 'obj_type': 'biz'}
  • 集群的创建、更新、删除

# 集群触发规则下的参数{'action': 'create', 'obj_type': 'set'}{'action': 'update', 'obj_type': 'set'}{'action': 'delete', 'obj_type': 'set'}
  • 模块的创建、更新、删除

# 模块触发规则下的参数{'action': 'create', 'obj_type': 'module'}{'action': 'update', 'obj_type': 'module'}{'action': 'delete', 'obj_type': 'module'}
  • 主机转移触发主机标识更新

# 主机转移触发的主机标识更新规则下的参数下{'action': 'update', 'obj_type': 'hostidentifier'}

注意:业务、集群、模块的更新操作,会自动触发主机标识更新,为什么呢?

因为主机标识更新是最小的原子操作,业务、集群、模块一旦更新,所有的主机的分组信息都需要做出一致性改变。因此,最终触发的操作如下:

# 业务更新{'action': 'create', 'obj_type': 'biz'}{'action': 'update', 'obj_type': 'hostidentifier'}
# 集群更新{'action': 'create', 'obj_type': 'biz'}{'action': 'update', 'obj_type': 'hostidentifier'}
# 模块更新{'action': 'create', 'obj_type': 'biz'}{'action': 'update', 'obj_type': 'hostidentifier'}


考虑到cmdb事件推送POST的参数格式的多样性,给gateway解析参数带来了一定的复杂度,在此我们特定义了一下cmdb触发规则:

  • 新建业务、集群、模块操作不会进行同步,只有当主机转移至相关模块下才会进行同时新建业务、集群、模块,以减少重复性操作;

  • 删除业务、集群、模块、主机进行同步;

  • 更新业务、集群、模块进行同步;


4.zabbix同步逻辑



5.jumpserver同步逻辑


与Zabbix不同的是,Jumpserver没有创建主机操作,因为默认情况下《蓝鲸实现多环境vsphere虚拟机交付》中会自动在jumpserver中创建主机。通过这一流程,我们默认所有的主机已经在jumpserver存在了。



总结

在没有cmdb之前,我们的基础设施管理是无序的,但是这也并不意味着有了cmdb就能将其管理的井然有序。因此,我认为最主要的核心思想还是基于cmdb,让基础设施在各平台有效的流转起来,而不是让其真正成为一个“花瓶”。



Grafana+钉钉告警之小细节

cmdb事件推送实现jumpserver资产分组同步

cmdb事件推送实现zabbix资产同步

运维思索:cmdb打通zabbix、jumpserver探索

蓝鲸实现多环境vsphere虚拟机交付

ansible自动化:操作系统初始化具体实现

K8SEASY:一键安装K8S高可用集群

Prometheus+k8s之告警通知



你与世界

只差一个

公众号




您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存